home *** CD-ROM | disk | FTP | other *** search
-
- LHWARP 1.21
- 6th January, 1990
-
- A disk tracker for the Amiga
-
- Written by Jonathan Forbes
-
- What is Lhwarp?
-
- (Pronounced L-H-WARP)
-
- Lhwarp is a program which will read tracks directly from your floppy disk,
- compress them, and output them to a file. The advantages of using Lhwarp are:
-
- o The entire disk structure, including the boot block, is preserved.
-
- o Lhwarp will always produce a smaller output file than ARC, ZOO or WARP.
- (note: this is only true when the default compression algorithm is used)
-
- o Lhwarp will only archive sectors which contain data, by using the disk's
- bitmap (however, Lhwarp will gladly compress every single sector on
- the disk, if you wish.)
-
- o Using Lhwarp is much less hassle than archiving each and every file
- individually.
-
- o The bootblock of any disk being either read or written is displayed, so
- that bootblock viruses can easily be found.
-
- Lhwarp will produce files much smaller than those produced by Warp, due to
- the fact that Lhwarp uses a more efficient compression algorithm (Adaptive
- Huffman Encoding); the same algorithm used in LHARC. Typically, an Lhwarp
- file will be 80% of the size of an equivalent Warp file, resulting in quite
- reasonable hard drive space savings.
-
- In addition, Lhwarp will only archive sectors which contain data; deleted
- information is not archived (unless you explicity request this to be done.)
- When compressing or decompressing data, sectors which contain data are marked
- with a '.' character, while sectors which do not contain data are marked with
- a '_' character. If the -m option is specified, all sectors will be marked
- with '.' automatically.
-
- Lhwarp's main (and perhaps only) disadvantage is that compression time is
- very large; it can take from 20 to 25 minutes to compress an entire disk
- (80 tracks.) There is not too much which can be done about this; you have to
- pay a price for the extra power.
-
- However, this is not as bad as it may seem; a disk only has to be Lhwarp'd
- once; after Lhwarp'ing, the output file will be transferred via a modem, from
- BBS to BBS. Because the file will be that much smaller than an equivalent
- file produced by Warp, the file will take less time to transfer, resulting in a
- lower phone bill. And, as mentioned before, it will occopy less space on the
- destination system.
-
-
- Algorithms
-
- For those who simply must have a faster compression rate, Lhwarp provides
- two additional compression algorithms; squeezing and vaporising (the latter is
- the 14 bit version of UNIX Compress.) Both are much faster than the LHARC
- Adaptive Huffman Encoding algorithm (called "freezing.") However, neither of
- them comes close to the compression ratio of freezing.
-
- Even so, the huge speed increase and reasonable compression rates should
- appeal to those who are less concerned with compression efficiency, and more
- concerned with speed.
-
- Freezing remains the default compression mode. Using the -c switch will
- cause the disk to be vaporised (not literally), while the -s switch will cause
- the disk to be squeezed. The -b option will cause each individual track to be
- either vaporised or squeezed, depending on which produces the smallest output.
-
- The -q option will cause Lhwarp to use its fastest and most reasonable
- algorithm on the disk. Currently, this is squeezing. Admittedly, vaporising
- is faster, but vaporising often generates track output which is actually
- larger than the track itself, and squeezing is almost as fast (certainly it's
- faster than freezing.)
-
- The most recommended option for speed, is the -b option, to select both
- algorithms; compression time is only a few minutes longer than that of one of
- the algorithms, and different algorithms sometimes work better for different
- disks.
-
- You cannot currently combine freezing with any other algorithm; this is for
- your own benefit; I have yet to see freezing beaten by vaporising or squeezing
- for any one track, ever! However, if you find that vaporising and squeezing
- frequently do compress tracks more efficiently, please inform me.
-
- To compress the NewTek DYNAMIC HI-RES demo disk:
-
- Compression Size Time (approximate)
- ----------- -------- ------------------
- Freezing 671630 20:00 minutes
- Vaporising/Squeezing 770722 10:30 minutes
- Squeezing 803714 07:30 minutes
- Vaporising 869515 06:30 minutes
- Warp program 796665 15:00 minutes
-
- At this point in time, Lhwarp does not check to see if the output for a
- track is larger than the input; this is why vaporising produced such a huge
- file; many tracks compressed from 11k to 13k. This will be corrected in a
- future version.
-
-
- Viewing
-
- Lhwarp also supports viewing; you may see how Lhwarp has compressed a disk
- (which tracks are contained in the file, which algorithm was used to compress
- them, the source and destination lengths of each track, the number of sectors
- compressed, and the sector map of each track.) The viewing option will also
- display any attached text.
-
- After any attached text is displayed, you must press return; this was
- implemented so that the displaying of the boot block won't scroll the text off
- the screen.
-
-
- More Information
-
- Lhwarp output files have the suffix ".LHW". If the filename you give
- Lhwarp does not end in ".LHW", Lhwarp will append ".LHW" to it. Please leave
- the suffix alone, and don't change it to ".WRP".
-
- The Adaptive Huffman Encoding algorithm was originally coded by Haruyasu
- Yoshizaki, and is the same algorithm used in LHARC 1.13c. When the more
- efficient LHARC 2.0 arrives from Japan, that algorithm will instead be used.
-
- Lhwarp was compiled and very heavily optimised under Lattice C 5.04. Even
- though Lattice produces very fast code, Lhwarp needs all the speed it can get.
- I have rewritten a few of Lhwarp's compression functions in assembly language,
- and performance has improved significantly.
-
- Nevertheless, the Lzhuf routines, which are now a mixture of Lattice C 5.04
- code and assembly language, are much faster than those in either Amiga Lharc,
- or the previous versions of Lhwarp. When compressing an arbitrary 40k file:
-
- Encode time(s) Decode time(s)
- Lharc 60 15
- Lhwarp 1.03 55 13
- Lhwarp 1.10 47 11
- Lhwarp 1.11 39 11
- Lhwarp 1.20 39 10
- Lhwarp 1.21 39 10
-
-
- Parameters
-
- To view Lhwarp's parameters, type "Lhwarp"; they are included within the
- program. You will be presented with:
-
- Usage: LHWARP <Command> [-option] <Unit> <Filename> <Start> <End> <TextFile>
-
- <Command> Read or Write
- -m: ignore bitmap
- -q: quick compression
- -s: squeeze
- -c: compress-14 (vaporise)
- -b: both squeeze/vaporise
- -v: view output file
- <Unit> Drive number (0 for internal, 1 ... 3 for external)
- <Filename> Output|Input filename
- <StartTrack> Track number (0 ... 79) [valid only in read mode]
- <EndTrack> Track number (0 ... 79) [valid only in read mode]
- <TextTFile> Append text in <TextFile> to output file [optional]
-
- Examples are:
-
- a) Lhwarp READ 0 mydisk 0 79
-
- This will read tracks 0 to 79 of the disk in drive 0 (i.e. the entire
- disk), and will output the result to "mydisk.lhw" Only sectors which contain
- data will be archived.
-
-
- b) Lhwarp READ 0 mydisk 0 79 mytext
-
- This will read tracks 0 to 79 of the disk in drive 0 (i.e. the entire
- disk), and will output the result to "mydisk.lhw". Only sectors which contain
- data will be archived. The text from the file "mytext" will be imported to
- the output file. Any text stored in the output file will be displayed when
- the disk is unarchived.
-
-
- c) Lhwarp -m READ 0 mydisk 0 79
-
- This will read tracks 0 to 79 of the disk in drive 0 (i.e. the entire
- disk), and will output the result to "mydisk.lhw". All sectors will be
- archived, regardless of whether or not they contain data; the disk's bitmap
- is ignored with the '-m' option.
-
-
- d) Lhwarp WRITE 1 mydisk
-
- This will output all tracks stored in mydisk.lhw to drive 1. If any
- text was in the output file, it will be displayed.
-
-
- e) Lhwarp -c READ 0 mydisk 0 79
-
- Same as a), except that the disk will be "vaporised."
-
-
- f) Lhwarp -s READ 0 mydisk 0 79
-
- Same as a), except that the disk will be "squeezed."
-
-
- g) Lhwarp -b READ 0 mydisk 0 79
-
- Same as a), except that tracks will be either squeezed or vaporisied,
- depending on which is more efficient.
-
-
- h) Lhwarp -m -c READ 0 mydisk 0 79
-
- Same as e), except that the bitmap will be ignored.
-
-
- i) Lhwarp -v mydisk
-
- View composition of the file MYDISK.LHW.
-
-
- Please note that you must combine options in the format of:
- 'Lhwarp -a -b -c ...'
- Not:
- 'Lhwarp -abc ...'
-
- The latter may have unpredictable results (most probably all options but
- '-a' will be ignored.)
-
-
- Virus detection
-
- Some people have complained about Warp in that it aids the spreading of
- boot block viruses. It is for this reason that Lhwarp will display the
- bootblock of any disk it reads or writes, so that one can see what is being
- Lhwarp'd. Any non-standard looking bootblock should be viewed with suspicion.
-
- If you see a non-standard bootblock in read mode, this means that the disk
- you are reading from might possibly contain a virus. If you see this in write
- mode, it means that the file you are writing out to your disk may contain a
- virus. In either case, you should load a virus checker to make sure (such as
- VirusX 4.0)
-
-
- Specifications
-
- Lhwarp uses ETD_READ and ETD_FORMAT to read/write directly from/to the
- trackdisk.device. The 16 bytes of label information for each sector are saved
- in the output file. A 32-bit CRC protects data integrity.
-
-
- Future Possibilities
-
- o Support for raw track reads and writes
- o Merging output files
- o Mix raw/normal tracks in a single file
-
-
- Acknowledgements
-
- Huffman routines - Haruyasu Yoshizaki (lzhuf.c, v1.13c)
- Compress - S.Thomas, J.McKie, S.Davies, K.Turkowski, J.Woods,
- and J.Orost (compress.c)
- Squeezing - William Swan (sq.c/usq.c)
- Bitmap information - Leo Schwab (diskmap2.c)
-
-
- This Program
-
- Lhwarp is a freely distributable, copyrighted piece of software. You do
- not have to pay money to use it, and may upload it wherever you choose, but
- you are not allowed to sell Lhwarp for profit, or include Lhwarp on a disk
- which is sold for profit, without the author's (Jonathan Forbes) permission.
-
- I can be contacted at 416-927-7844 (voice.)
-
-
- Disclaimer
-
- I am in no way responsible for anything this program does; you are using
- it entirely at your own risk, so if you are kidnapped and held hostage by
- Libyan terrorists, don't blame me!
-
-
- Important note
-
- The STACK SIZE requirements have increased again, slightly -15k or so
- should be adequate. This will be corrected in a future version.
-
-
- Conclusion
-
- So there you have it; Lhwarp is faster and more efficent than Warp, and
- Lhwarp is being updated; Warp isn't! All that's missing is the support for
- raw track reads/writes, which will be implemented as soon as I find out how.
-